<template>
  <div class="wrap clearfix">
    <div class="location">
      当前位置：首页<span>&gt;</span><b class="red">购物车</b>
    </div>
    <MyGoods
      :list="list"
      :isAll="isAll"
      @ckAll="ckAll"
      :allPrice="allPrice"
      @num1="num1"
      @num2="num2"
      @delList="delList"
      :lowPrice="lowPrice"
      @delChoose="delChoose"
    ></MyGoods>
  </div>
</template>

<script>
import MyGoods from '@/components/MyGoods.vue'
export default {
  components: {
    MyGoods,
  },
  data() {
    return {
      list: [
        {
          name: '凌美Lamy Safari钢笔/签字笔T52黑色墨水<',
          id: 0,
          oldPrice: 158.0,
          price: 129.0,
          count: 0,
          img: 'https://img-blog.csdnimg.cn/20200520143727974.jpg',
          isSelected: true,
        },
        {
          name: '凌美Lamy Safari钢笔/签字笔T52黑色墨水<',
          id: 1,
          oldPrice: 158.0,
          price: 145.0,
          count: 0,
          img: 'https://img-blog.csdnimg.cn/20200520143752215.jpg',
          isSelected: false,
        },
        {
          name: '德国进口 凌美(LAMY)签字笔钢笔墨水水笔专用一次性墨水胆笔芯5支一盒T10德国进口',
          id: 2,
          oldPrice: 158.0,
          price: 130.0,
          count: 0,
          img: 'https://img-blog.csdnimg.cn/20200520143746317.jpg',
          isSelected: true,
        },
      ],
    }
  },
  //全选反选
  methods: {
    ckAll(lp) {
      this.list.forEach((item) => (item.isSelected = lp))
    },
    num1(id) {
      this.list.find((item) => item.id === id).count++
    },

    num2(id) {
      const obj = this.list.find((item) => item.id === id)
      obj.count > 0 ? obj.count-- : 0
    },
    delList(id) {
      this.list = this.list.filter((item) => item.id !== id)
    },
    //删除已选中
    delChoose() {
      this.list = this.list.filter((item) => item.isSelected === false)
    },
  },
  //全选反选
  computed: {
    isAll() {
      if (this.list.length === 0) {
        return false
      } else {
        return this.list.every((item) => item.isSelected)
      }
    },
    //被选中的总价
    allPriceTotal() {
      return this.list.filter((item) => item.isSelected === true)
    },
    allPrice() {
      return this.allPriceTotal.reduce((prev, item) => {
        return prev + item.oldPrice * item.count
      }, 0)
    },
    //优惠
    lowPrice() {
      return this.allPriceTotal.reduce((prev, item) => {
        return prev + (item.oldPrice - item.price) * item.count
      }, 0)
    },

    // allPrice() {
    //   return this.list.reduce((prev, item) => {
    //     return prev + item.oldPrice * item.count
    //   }, 0)
    // },
  },
}
</script>

<style scoped>
/* 公共样式 */
.clearfix {
  content: '';
  display: block;
  clear: both;
}

.red {
  color: #f30213;
}

.fl {
  float: left;
}

.fr {
  float: right;
}

/* 清除默认样式 */
* {
  margin: 0px;
  padding: 0px;
  font-size: 14px;
}

a {
  text-decoration: none;
  color: #333;
}

input {
  outline: none;
}

.wrap {
  width: 1180px;
  margin: 0 auto;
}

.wrap .location {
  padding: 10px 0;
  border-bottom: 1px solid #ccc;
  margin-bottom: 20px;
}

.cartTable {
  border: 1px solid #ccc;
}

.cartTable tr.title {
  background-color: rgb(241, 243, 244);
  font-weight: bold;
}

.cartTable tbody tr td {
  /* border: 1px solid rgb(245, 245, 245); */
  padding: 10px;
}

/* 原价 */
.cartTable tbody tr td .tdl {
  text-decoration: line-through;
  color: #999;
}

/* 商品数量 */
.cartTable tr .amount .unum {
  width: 70px;
  height: 30px;
  box-sizing: border-box;
  text-align: center;
  font-size: 16px;
  float: left;
}

/* 数量加减按钮 */
.cartTable tr .amount a {
  display: block;
  width: 30px;
  height: 30px;
  line-height: 30px;
  text-align: center;
  font-size: 18px;
  border: 1px solid #ccc;
  box-sizing: border-box;
}

.cartTable tr .amount a.Increase {
  border-right: none;
  float: left;
}

.cartTable tr .amount a.Reduce {
  border-left: none;
  float: left;
}

.cartTable tr.count .jiesuan .right {
  text-align: right;
}

.cartTable tr.count .jiesuan .right p {
  margin: 5px 0;
}

.cartTable tr.count .jiesuan .right .pay {
  display: block;
  width: 160px;
  height: 50px;
  line-height: 50px;
  background-color: #f30213;
  color: #fff;
  font-weight: bold;
  text-align: center;
  font-size: 20px;
}
</style>
